package ar.edu.utn.frba.dds.tp.tests.vuelos;

import static org.junit.Assert.assertTrue;

import java.math.BigDecimal;

import junit.framework.Assert;

import org.joda.time.LocalDate;
import org.joda.time.LocalTime;
import org.junit.Before;
import org.junit.Test;

import ar.edu.utn.frba.dds.tp.code.Asientos.AsientoDeVuelo;
import ar.edu.utn.frba.dds.tp.code.Asientos.ClaseAsiento;
import ar.edu.utn.frba.dds.tp.code.Asientos.EstadoAsiento;
import ar.edu.utn.frba.dds.tp.code.Asientos.UbicacionAsiento;
import ar.edu.utn.frba.dds.tp.code.adapter.LanchitaAdapter;
import ar.edu.utn.frba.dds.tp.code.vuelos.Aerolinea;
import ar.edu.utn.frba.dds.tp.code.vuelos.Vuelo;

public class VueloTest {
	
	Aerolinea lanchita = new LanchitaAdapter();
	Vuelo vuelo = new Vuelo("1102010201012201","BA","LA",new LocalDate(2012,10,10), new LocalDate(2012,10,11), new LocalTime(10,0), new LocalTime(2,10));
	AsientoDeVuelo asientoDePrimeraPasilloSuperOferta;
	AsientoDeVuelo asientoEjecutivoVentanaNoSuperOferta;
	

	@Before
	public void setUp() {
		vuelo.setAerolinea(lanchita);
		
		asientoDePrimeraPasilloSuperOferta = new AsientoDeVuelo(1, new BigDecimal("101"), ClaseAsiento.PRIMERA, UbicacionAsiento.PASILLO, EstadoAsiento.DISPONIBLE);
		asientoDePrimeraPasilloSuperOferta.setVuelo(vuelo);
		
		asientoEjecutivoVentanaNoSuperOferta = new AsientoDeVuelo(10, new BigDecimal("99999"), ClaseAsiento.EJECUTIVA, UbicacionAsiento.VENTANA, EstadoAsiento.DISPONIBLE);
		asientoEjecutivoVentanaNoSuperOferta.setVuelo(vuelo);

		vuelo.agregarAsiento(asientoEjecutivoVentanaNoSuperOferta);
		vuelo.agregarAsiento(asientoDePrimeraPasilloSuperOferta);
	}

	
	@Test
	public void testIncrementaElPrecioDelAsientoDebidoAlImpuesto(){
		assertTrue(vuelo.getPrecioAsiento(asientoDePrimeraPasilloSuperOferta).compareTo(asientoDePrimeraPasilloSuperOferta.getPrecio()) > 0 );
	}
	
	@Test
	public void testVueloTieneAsientosLibres() {
		Assert.assertTrue(vuelo.tieneAsientosLibres());
	}
}
